home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / Projects / Examples / First Tutorial / Fiborock next >
Lisp/Scheme  |  1998-10-26  |  2KB  |  111 lines

  1. ; FIBOROCK  
  2.  
  3. (setq sonal (activate-tonality 
  4.                 (pentatonic c 6) (blues1 f 6))
  5.       tonal (activate-tonality 
  6.                 (dorian c 4) (pentatonic b& 3))
  7.       chords (activate-tonality 
  8.                 (c min 7 1 4) (d& maj maj7 1 4))
  9. )
  10.  
  11. (setq mel1 '(a b c d) ; bass  
  12.       mel2 '(a d b c))
  13.  
  14. (setq solo1 (gen-random-keep 0.45 8 '(1 7) '(= a a a a a = a) '(b c d e)))  
  15.  
  16. (setq solo2 (find-change (vector-to-symbol a g (gen-noise-white 30))))
  17.  
  18. (setq chd1 '(bcde); keyboard
  19.       chd2 '(a cd bde))
  20.  
  21. ; make drums
  22.  
  23. (setq drms1 '(ah h dh ah h h dh i)    ; hi-hat, snare, bass drum
  24.       drms2 '(h ch ch ah ah ic h ha)) ; hi-hat, rimshot, bass drum
  25.  
  26. ; make some rhythms
  27.  
  28. (setq rhy1 (gen-loop '((1 4 2) (5 6 4) (1 6 3)) 
  29.                      '(1/16 1/16 1/16 1/16 1/8 1/8))
  30.       rhy2 (gen-fibonacci 5 '(1/16 1/16 1/8) '(1/4 1/16 1/16 1/8)))
  31.  
  32. (setq rhyc '(1/2 1/1 1/2 1/2 1/2)
  33.       rhyd (gen-fibonacci 5 '(1/16 -1/16 1/8) '(1/16 1/8 1/16 1/4)))
  34.  
  35. ; make melodies
  36.  
  37. (setq mel1a (fill-template rhy1 mel1)
  38.       mel2a (fill-template rhy2  mel2))
  39.  
  40. (setq drms1a (fill-template rhy1 drms1)
  41.       drms2a (fill-template rhy2 drms2))
  42.  
  43. (setq solo1a (fill-template rhy1 solo1)
  44.       solo2a (fill-template rhy2 solo2))
  45.  
  46. (setq chds1 (fill-template rhyc chd1)
  47.       chds2 (fill-template rhyd chd2))
  48.  
  49. (setq zone1 (list (make-zone rhy1))
  50.       zone2 (list (make-zone rhy2)))
  51.  
  52. (setq vel1 (fill-template rhy1 '(74 54 84 74 54 54 84 44))
  53.       vel2 (fill-template rhy2 '(64 94 127 84 74 84 64 117)))
  54.  
  55. ; define virtual instruments 
  56.  
  57. (def-symbol
  58.    solo (append solo1a solo2a)
  59.    bass (append mel1a mel2a)
  60.    piano (append chds1 chds2)
  61.    drums (append drms1a drms2a)  
  62. )
  63.  
  64. (def-length
  65.    solo (append rhy1 rhy2)
  66.    bass (append rhy1 rhy2)
  67.    piano (append rhyc rhyd) 
  68.    drums (append rhy1 rhy2)
  69. )
  70.  
  71. (def-velocity
  72.    drums (append vel1 vel2)
  73. )
  74.  
  75. (def-zone
  76.    default (append zone1 zone2)   
  77. )
  78.  
  79. (def-tonality
  80.    solo sonal
  81.    bass tonal
  82.    piano chords
  83.    drums mt-32
  84. )
  85.  
  86. (def-channel
  87.    solo 1
  88.    bass 3
  89.    piano 2
  90.    drums 10   
  91. )
  92.  
  93. (def-program gm-sound-set
  94.    solo blown-bottle
  95.    bass electric-bass-pick
  96.    piano acoustic-grand-piano
  97.  
  98. ; save all into a MIDI file and play it
  99.     
  100. (def-tempo 120)
  101.  
  102. (midiport :printer)
  103.  
  104. (compile-instrument-p "ccl;output:" "quartet"
  105.    solo
  106.    bass
  107.    pno
  108.    drums
  109. )
  110.